package com.gilelibrary;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.widget.ImageView;
import com.gilelibrary.utils.SimpleTarget;
import com.squareup.picasso.LruCache;
import com.squareup.picasso.OkHttpDownloader;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Created by yangc on 2017/5/7.
* E-Mail:yangchaojiang@outlook.com
* Deprecated:
*/
public class ImageLoader {
public static final String TAG = "ImageLoader";
private volatile static ImageLoader instance;
private int defaultRes;
private int defaultError;
private volatile static LruCache cache;
public static ImageLoader getInstace() {
if (instance == null) {
synchronized (ImageLoader.class) {
if (instance == null) {
instance = new ImageLoader();
}
}
}
return instance;
}
private ImageLoader() {
}
/***
* 设置默认图
*
* @param defaultRes 默认加载图
* @param defaultError 默认失败图
**/
public void defaultImage(int defaultRes, int defaultError) {
this.defaultRes = defaultRes;
this.defaultError = defaultError;
}
/***
* 初始化日志
*
* @param context application
* @param isDebug 开启调试模式,指示器
* @param isLog 开启日志
***/
public static void init(Context context, boolean isDebug, boolean isLog) {
//配置缓存
cache = new LruCache(5 * 1024 * 1024);// 设置缓存大小
//配置线程池
ExecutorService executorService = Executors.newFixedThreadPool(8);
Picasso.Builder builder = new Picasso.Builder(context);
//配置下载器
builder.downloader(new OkHttpDownloader(context));
builder.defaultBitmapConfig(Bitmap.Config.ARGB_4444);
builder.memoryCache(cache);
builder.executor(executorService);
//配置调试指示器
builder.indicatorsEnabled(isDebug);
//构造一个Picasso
Picasso picasso = builder.build();
//配置日志
picasso.setLoggingEnabled(isLog);
//设置全局单列instance
Picasso.setSingletonInstance(picasso);
}
private void test() {
// .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)//跳过内存缓存
// .networkPolicy(NetworkPolicy.NO_CACHE)//跳过磁盘缓存
// NO_CACHE:表示处理请求的时候跳过处理磁盘缓存
// NO_STORE:表示请求成功后,不将结果缓存到Disk, 但是这个只对OkHttp有效。
}
public void displayImage(Context context, String path, ImageView imageView) {
Picasso.with(context).load(path).tag(context).centerCrop().placeholder(defaultError).error(defaultRes).into(imageView);
}
public void displayImage(Context context, String path, ImageView imageView, final SimpleTarget<Bitmap> simpleTarget) {
Picasso.with(context).load(path).tag(context).centerCrop().placeholder(defaultError).error(defaultRes).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
simpleTarget.onResourceReady(bitmap);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
simpleTarget.onLoadFailed(errorDrawable);
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
simpleTarget.onLoadStarted(placeHolderDrawable);
}
});
}
public void displayImage(Context context, String path, ImageView imageView, int defaultRes, int width, int height) {
Picasso.with(context).load(path).tag(context).centerCrop().resize(width, height).placeholder(defaultError).error(defaultRes).onlyScaleDown().into(imageView);
}
public void displayImage(Context context, String path, ImageView imageView, int defaultRes, int defaultError, int width, int height) {
Picasso.with(context).load(path).tag(context).centerCrop().resize(width, height).placeholder(defaultError).error(defaultRes).onlyScaleDown().into(imageView);
}
public void clearDiskCache(Context context) {
}
public void clearMemoryCache(Context context) {
cache.clear();
}
/***
* //监听onScrollStateChanged的时候调用执行 e 被暂停的给定tag的所有请求s
**/
public void resumeTag(Context context) {
Picasso.with(context).resumeTag(context);
}
/***
* 监听onScrollStateChanged的时候调用执行 滑动暂停加载图片
**/
public void pauseTag(Context context) {
Picasso.with(context).pauseTag(context);
}
/***
* 取消设置了给定tag的所有请求
**/
public void cancelTag(Context context) {
Picasso.with(context).cancelTag(context);
}
}